<?php

class CHMTL_PDF
	{
		public	$sEdition				= '';		// nom de l'édition générée
		public	$sFileEdition			= '';
		public	$bWithCss			= '';
		
		public function __construct($sContentPHP, $sFileOutput, $sSensPage='L', $bWithCss=false, $bFromFile = true, $bWithApercu=false)
		{
			$this->sFileEdition = '../generated/edition/'.$sFileOutput.'.pdf';
			$this->sEdition = $sFileOutput;
			$this->bWithCss = $bWithCss;
			
			if(!$bFromFile)
			{
				try
				{
					$html2pdf = new HTML2PDF($sSensPage);
					$html2pdf->setDefaultFont('Arial');
					$sContentPHP = $this->getHtmlFromTemplate($sContentPHP);
					$html2pdf->writeHTML($sContentPHP, $bWithApercu);
					$html2pdf->Output($this->sFileEdition, 'F');
				}
				catch(HTML2PDF_exception $e) 
				{ 
					echo $e; 
				}
			}
		}
		
		public function getHtmlFromTemplate($html)
		{
			$html2pdf = new HTML2PDF();
			$css = '
			<style type="text/css">
			<!--
table.tab_list tr#niv1 .col1, table.tab_list td.col1{ width: 14%; }
table.tab_list tr#niv1 .col2, table.tab_list td.col2{ width: 60px!important; }
table.tab_list tr#niv1 .col3, table.tab_list td.col3{ width: 80px!important;}
table.tab_list tr#niv1 .col4, table.tab_list td.col4{ width: 90px!important;}
table.tab_list tr#niv1 .col5, table.tab_list td.col5{ width: 120px!important;}
table.tab_list tr#niv1 .col6, table.tab_list td.col6{ width: 60px!important;}
table.tab_list tr#niv1 .col7, table.tab_list td.col7{ width: 60px!important;}
table.tab_list tr#niv1 .col8, table.tab_list td.col8{ width: 60px!important;}
-->
			</style>'; //mettre ici le css par défaut s'il yen a
		
			$html = str_replace('<PDF', '<pdf', $html);
			$html = str_replace('</PDF', '</pdf', $html);
			
			if($this->bWithCss) $css = $this->getCssFromTemplate($html);
			
			// extraction du contenu pour le pdf
			$res = explode('<pdf', $html);
			if (count($res)<2) return $css.$html;
			
			$content = $css.'<page'.$res[1];
			$content = explode('</pdf', $content);
			$content = $content[0].'</page>';
				
			return $content;
		}
		
		public function getCssFromTemplate($html)
		{
			$html2pdf = new HTML2PDF('');
			
			// extraction du contenu pour le pdf
			$res = explode('<link rel="stylesheet" type="text/css" href="', $html);
			if (count($res)<2) return $html;
			$File = explode('.css" />', $res[1]);
		
			$sCodeCss = file_get_contents($File[0].'.css');
			$content = '<style type="text/css"><!--'.$sCodeCss.'--> </style>';
				
			return $content;
		}
		
		
		public function sendPdfByMail($sDestinataire, $sDU, $sAU)
		{
		  	$mail = new PHPMailer();
		  	
		    $mail->IsHTML(true);
		    //$mail->IsSendmail();
		    $mail->IsMail(); //@TODO: remplacé pour tester une solution uniforme linux/windows
		  
		    $mail->SetLanguage('fr', './mail/language/');
		    //$mail->Encoding();
		    $mail->CharSet = 'UTF-8';
		    $mail->FromName = $sDestinataire;
		    $mail->From = $sDestinataire;
		    $mail->AddAddress($sDestinataire);
		    //traitement du titre de mail
    		if($this->sEdition == 'Liste appels echeance')
    			$sLibelleComplet = str_replace("Liste appels echeance","Liste des appels d'échéance", $this->sEdition);
		    else if($this->sEdition == 'Liste echeances impayees')
    			$sLibelleComplet = str_replace("Liste echeances impayees","Liste des échéances impayées", $this->sEdition);
    		else if($this->sEdition == 'Liste des sinistres declares')
    			$sLibelleComplet = str_replace("Liste des sinistres declares","Liste des sinistres déclarés", $this->sEdition);
    		else if($this->sEdition == 'Liste des sinistres regles')
    			$sLibelleComplet = str_replace("Liste des sinistres regles","Liste des sinistres réglés", $this->sEdition);
    		else $sLibelleComplet = $this->sEdition;
    		
    		$mail->Subject = $sLibelleComplet;
    		
		    $mail->Body='<html><body><font size=4><br>Veuillez trouver ci-joint la '.str_replace("é","&eacute;", $sLibelleComplet).' du '.$sDU.' au '.$sAU.'</font></body></html>';
		    $mail->AddAttachment($this->sFileEdition, $this->sEdition.'.pdf', 'base64', 'application/pdf');
	
			if(!$mail->Send()) 
			{
				$sRetour = "Mailer Error: " . $mail->ErrorInfo;
	  			
			} else 
			{
	  			$sRetour = "Votre édition a été envoyée par mail";
			}
			
			unset($mail);
			
		   return $sRetour;
		}
	}
?>